Skip to content
/ gpg4win Public

GnuPG for Windows. NOTE: Maintainers are not tracking this mirror. Do not make pull requests here, nor comment any commits, submit them usual way to bug tracker (https://www.gnupg.org/documentation/bts.html) or to the mailing list (https://www.gnupg.org/documentation/mailing-lists.html).

License

Notifications You must be signed in to change notification settings

gpg/gpg4win

Repository files navigation

This is Gpg4win - A distribution of GnuPG and user interfaces for it.
=====================================================================

See also https://gnupg.org and https://gpg4win.org

This README is for the **GnuPG 2.6 based 64 bit Windows** version.


About Gpg4win:
--------------

The Gpg4win source code (this repository) consists of a list of
source packages in the `packages` subdirectory and build rules
in the files `build.sh`, `src/Makefile.am` and `src/gpg4win.mk.in`.

During the build, the packages will be compiled for a Windows host
system using these build rules and then packaged according to the
various `.nsi` files in the folder `src/nsis`.

To have the same software versions also available on Linux
systems, independent of the distribution, Gpg4win can also be
built for Linux as an AppImage. The rules for that can be found
under `src/appimage`.

Gpg4win can also be distributed as an MSI package in customized
configurations. The MSI package description, using the WIX toolset,
is generated from the NSIS files with the script `src/make-msi.pl`.


Building:
---------

To achieve reproducible results independent of your system, Gpg4win
utilizes Docker; see:

  $ ./build.sh --help

Executing

  $ ./build.sh

without any arguments will create an installer based on the current
version using a dedicated build directory.

If you want to build from a Git repository or using modified sources
you should do this in the source directory.

1. If you don't have a ~/.gnupg-autogen.sh file use

     build-aux/gpg-authcode-sign.sh --template >~/.gnupg-autogen.sh

   and adjust the file for your setup.

2. Check that packages/BUILDTYPE is what you want (usually "default").

3. Run

     ./autogen.sh

4. Do either this

     cd packages
     ./download.sh
     cd ..

   or pass the --download option to the command below.

5. Run

     ./build.sh

   You may add certain options as show by the option --help.  For
   example in case of a build problem you may enter the docker
   container using

    ./build.sh --shell

   and then cd to /build.  The option --builddir can be used to
   specify a non-default build directory.  To build an AppImage, add
   the parameter `--appimage` to invocations of build.sh.


Building the Webpages:
----------------------

The website is in a dedicated repository on https://git.gnupg.org


Adding New Packages to the Installer:
-------------------------------------

This requires editing a couple of files. Here is a short run-up:

Add the package download to `packages/packages.list`. Please add a
comment with the current date and how you have verified the
sources. For verification, PGP signatures using one of the trusted
keys from the `distsigkey.gpg` file are preferable.

If that is not available and upstream provides no other way to verify
a checksum besides HTTPS, at least confirm the checksum from a second
source and note that in the comment.  e.g.:

```
  # last-changed: 2023-05-03
  # by ah
  # verified: verification of checksum from both sf and freebsd.org
  #           server https://downloads.sourceforge.net
  file libfoo/foo16/1.6.40/foo-1.6.40.tar.xz
  chk  535b479b2467ff231a3ec6d92a525906fb8ef27978be4f66dbe05d3f3a01b3a1
```

If the filename does not match the pattern:
`pkgname-version.archive-suffix`
you can use the `name` keyword to match this pattern.

Add the package to `configure.ac` using the appropriate macro for the
build system. `GPG4WIN_SPKG` is the macro for generic autotools based
packages. Check out the available macros in `m4/gpg4win.m4`.  The
macro call must include the required dependencies as the second
parameter. If your package is a dependency of another package, add
this accordingly.  This has to be done for both `APPIMAGE_` and
`GPG4WIN_`.

Define the build targets by adding foo to one of the package list
variables like `gpg4win_spkgs` in `src/Makefile.am` and `appimage_spkgs`
in `src/appimage/Makefile.am`. And if required, also add any required
configure flags, etc. See existing packages for examples.

If your package is only for the AppImage, you are now done. Optionally,
add an rsync filter under `src/appimage/rsync-filters` to only package
some of the installed files.


NSIS Packaging:
---------------

To have the package included in a Windows installation:

Add constants for the package FOO into `src/config.nsi.in` which
are then configured by the build system automatically.

  @HAVE_PKG_FOO@
  !define gpg4win_pkg_foo @gpg4win_pkg_foo@
  !define gpg4win_pkg_foo_version @gpg4win_pkg_foo_version@

Create 2 new installer scripts, named `src/inst-foo.nsi` and
`uninst-foo.nsi` and add them to `EXTRA_DIST` in `src/Makefile.am`.

Add FOO to `src/inst-sections.nsi` by including the `inst-foo.nsi` and
`uninst-foo.nsi` scripts depending on `HAVE_PKG_FOO`. Then modify
`CalcDepends`. For a dependency, first use `UnselectSection` on the
new package and then select it together with the component for which
it is required.

Then run the usual `./autogen.sh` to create the actual configure file
and build the installer as described above.


NSIS Installer Slideshow
------------------------

During installation we are showing a slide show. If you want to change
the contents shown add / modify files in the src/slideshow
subfolder. Install them in inst-gpg4win.nsi (Add them to the list of
files before g4wihelp::slide_show) and modify src/slideshow/slides.dat
accordingly.

Version numbers
---------------

We use a specific order of version numbers.  This is best shown by an
example:

  2.1.1             - The final 2.1.1 release.
  2.1.1-beta88      - A snapshot before the 2.1.1 release.
                      (The 88 in this example is the number of
                       commits since the last release).

The important point is that we bump up the version number before we do
an release and append a suffix to mark it as a development version.
This allows other software to use a configure check for the next to be
released version of gpg4win.


Copyright
---------

A list of copyright noticed can be found in `doc/pkg-copyright.txt`.
The **Gpg4win build system** is

Copyright (C) 2005-2013,2019-2025 g10 Code GmbH
Copyright (C) 2013-2018 Intevation GmbH
Copyright (C) 2015-2018 Bundesamt für Sicherheit in der Informationstechnik

Gpg4win is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

Gpg4win is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, see <https://www.gnu.org/licenses/>.

About

GnuPG for Windows. NOTE: Maintainers are not tracking this mirror. Do not make pull requests here, nor comment any commits, submit them usual way to bug tracker (https://www.gnupg.org/documentation/bts.html) or to the mailing list (https://www.gnupg.org/documentation/mailing-lists.html).

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 16